

class STest {
    public static void main(String[] args) {
	if (args.length == 0) {
	    System.out.println("please type some test data on the command line");
	    System.exit(1);
	}

	System.out.println("testing constructor/isEmpty");
	Stack stack = new ArrayStack();
	//	Stack stack = new ListStack();
	check (stack.isEmpty());

	System.out.println("testing push");
	for (int i = 0; i < args.length; i++)
	    stack.push(args[i]);

	System.out.println("testing isEmpty");
	check (!stack.isEmpty());

	System.out.println("testing clear/isEmpty");
	stack.clear();
	check (stack.isEmpty());

	System.out.println("testing push/top");
	for (int i = 0; i < args.length; i++) {
	    stack.push(args[i]);
	    check ( stack.top().equals(args[i]) );
	}

	System.out.println("testing top/pop");
	for (int i = args.length-1; i >= 0; i--) {
	    check ( stack.top().equals(args[i]) );
	    check ( stack.pop().equals(args[i]) );
	}

	System.out.println("testing isEmpty");
	check (stack.isEmpty());

	System.out.println("testing push/top");
	for (int i = 0; i < args.length; i++) {
	    stack.push(args[i]);
	    check ( stack.top().equals(args[i]) );
	}

	System.out.println("testing top/pop");
	for (int i = args.length-1; i >= 0; i--) {
	    check ( stack.top().equals(args[i]) );
	    check ( stack.pop().equals(args[i]) );
	}

	System.out.println("testing isEmpty");
	check (stack.isEmpty());

	System.out.println( "Tests Succeeded!" );
    }
    static void check (boolean test) {
	if (!test) {
	    System.out.println("FAILED");
	    System.exit(1);
	}
    }
}

